今天到天母看棒球,正在回中壢的路上
被逆轉整個心情鬱悶阿,對韓國也是先領先又被追上
讓人想起去年經典賽和之前的各大國際賽事,有時候就是差那麼一點QQ
下週決戰澄清湖希望能進季後賽!!!
上兩篇簡介了這個模型機的基本元件和架構
接下來來看看動態的流程吧
計算機在執行一條指令時的主要步驟有四:
* 取指 (Fetch)
* 譯碼 (Decode)
* 執行 (Execute)
* 回寫 (Write-back)
以上圖為例我們將執行一條指令:ADD R0, [6]
也就是要將 R0 和記憶體位址為 6 的數據加起來得到一個運算結果
在這種指令格式中第一個數我們會默認為既是輸入也是輸出
所以最後結果會回存到 R0 這個暫存器當中
以這個圖中數據所示,就是把存儲器中位址 0110(6) 的資料和 R0 中的相加
可以觀察到的是 PC 中的數值也就是下一條要被執行的指令是存在 0001 這個位址的
接下來就是來觀察這個模型該怎麼實際執行這條指令
取指
* 控制器將指令的地址送往存儲器
* 存儲器案給定的地址讀出指令內容送回控制器
具體步驟如下:
譯碼
* 控制器分析指令的操作性質
* 控制器向相關元件發出指令所需的控制信號
也就是說:
欸這麼快,上面不是漏漏長嗎,雖然老師沒有說
不過感覺就是個留待後面介紹的感覺,就乖乖地接著把課上下去吧
執行
* 控制器從通用暫存器或是存儲器取出操作數據
* 控制器命令運算器對操作數進行指令規定的運算
根據這條指令我們會發現需要再去存儲器中拿 [6] 的資料
回寫
* 將運算結果寫入通用暫存器或存儲器
控制器在 ALU 完成運算後會將結果從輸出暫存器透過內部總線搬回指令指定的位置 R0
也就是把加法的結果保存下來
我想如果是要存回存儲器,應該是會把資料送到 MDR 吧。
接著 CPU 就會自動再回到取指繼續執行下一條指令,然後不斷取指譯碼執行回寫 loop
心得
到目前為止我們已經掌握了這個馮紐曼架構模型的運作原理
下一篇將關注如何透過輸入設備對計算機下達指令,計算機又是怎麼透過輸出設備把結果顯示出來。
一條指令的運行背後竟然有這麼複雜的結構關係
現在的 CPU 不是動輒一秒幾百萬行(?)指令在跑嗎,只能說能夠想出這些的人真的是天才阿(大拇指)